package words;

/**
 * 给你一份『词汇表』（字符串数组） words 和一张『字母表』（字符串） chars。
 * <p>
 * 假如你可以用 chars 中的『字母』（字符）拼写出 words 中的某个『单词』（字符串），那么我们就认为你掌握了这个单词。
 * <p>
 * 注意：每次拼写时，chars 中的每个字母都只能用一次。
 * <p>
 * 返回词汇表 words 中你掌握的所有单词的 长度之和。
 * <p>
 *  
 * <p>
 * 示例 1：
 * <p>
 * 输入：words = ["cat","bt","hat","tree"], chars = "atach"
 * 输出：6
 * 解释：
 * 可以形成字符串 "cat" 和 "hat"，所以答案是 3 + 3 = 6。
 * 示例 2：
 * <p>
 * 输入：words = ["hello","world","leetcode"], chars = "welldonehoneyr"
 * 输出：10
 * 解释：
 * 可以形成字符串 "hello" 和 "world"，所以答案是 5 + 5 = 10。
 * <p>
 */
public class Words {
    public static void main(String[] args) {
        //String[] words = {"cat", "bt", "hat", "tree"};
        //String chars = "atach";
        //String[] words = {"hello", "world", "leetcode"};
        //String chars = "welldonehoneyr";
        //String[] words = {"boygirdlggnh"};
        //String chars = "usdruypficfbpfbivlrhutcgvyjenlxzeovdyjtgvvfdjzcmikjraspdfp";
        String[] words = {"cat","bt","hat","tree"};
        String chars = "atach";
        System.out.println(countCharacters(words, chars));
    }

    public static int countCharacters(String[] words, String chars) {
        int sum = 0;
        int[] charList = new int[26];
        for (char ch : chars.toCharArray()) {
            charList[ch - 'a'] += 1;
        }

       a: for (int i = 0; i < words.length; i++) {
            boolean flag = true;
            String word = words[i];
            int[] wordList = new int[26];
            for (char wch : word.toCharArray()) {
                wordList[wch - 'a'] += 1;
            }
            for (int j = 0; j < word.length(); j++) {
                int k = word.charAt(j)-'a';
                System.out.println(wordList[j] + "   " + charList[j]);
                if (wordList[k] > charList[k]) {
                    continue a;
                }
            }
            sum += word.length();
        }
        return sum;
    }
}
